package com.xth8013.as.dao;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.xth8013.as.domain.Role;
import com.xth8013.as.util.RoleQueryHelper;

/**
 * 
 * @Description:
 * @author: tianhua.xie
 * @Date: 2017年4月3日 下午9:39:52
 *
 */
public interface RoleDao {

	/**
	 * 插入角色信息
	 * 
	 * @param role
	 * @return
	 */
	int insert(Role role);

	/**
	 * 插入角色菜单信息
	 * 
	 * @param roleId
	 * @param menuId
	 * @return
	 */
	int insertRoleMenu(@Param(value = "roleId") Integer roleId, @Param(value = "menuId") Long menuId);

	/**
	 * 根据id查找角色信息
	 * 
	 * @param roleId
	 * @return
	 */
	Role selectById(Integer roleId);

	/**
	 * 根据角色名称查找角色信息
	 * 
	 * @param roleName
	 * @return
	 */
	Role selectByName(String roleName);

	/**
	 * 根据id删除角色信息
	 * 
	 * @param roleId
	 * @return
	 */
	int deleteById(Integer roleId);

	/**
	 * 更新角色信息
	 * 
	 * @param role
	 * @return
	 */
	int update(Role role);

	/**
	 * 加载所有的角色
	 * 
	 * @return
	 */
	List<Role> loadAllRoles();

	/**
	 * 根据角色id，获取角色的所有菜单id
	 * 
	 * @param roleId
	 * @return
	 */
	List<Long> loadAllRoleMenuByRoleId(@Param(value = "roleId") Integer roleId);

	/**
	 * 根据角色id，删除角色的所有菜单
	 * 
	 * @param roleId
	 */
	void deleteRoleMenusByRoleId(@Param(value = "roleId") Integer roleId);

	/**
	 * 根据查询帮助类，获取对应的所有角色
	 * 
	 * @param helper
	 * @return
	 */
	List<Role> loadAllRolesByHelper(RoleQueryHelper helper);

	/**
	 * 根据查询帮助类，获取对应的所有角色的个数
	 * 
	 * @param helper
	 * @return
	 */
	Integer cntRolesByHelper(RoleQueryHelper helper);

	/**
	 * 根据角色id集合(10001,10002...)，删除对应的所有角色
	 * 
	 * @param decRoleIds
	 * @return
	 */
	int deleteRolesByIds(@Param(value = "decRoleIds") String decRoleIds);

	/**
	 * 根据角色id集合(10001,10002...)，获取对应的正在使用中的所有角色
	 * 
	 * @param roleIds
	 * @return
	 */
	List<Role> selectUsingRoles(@Param(value = "roleIds") String roleIds);

	/**
	 * 根据角色id集合(10001,10002...)，删除所有对应的角色菜单
	 * 
	 * @param decRoleIds
	 * @return
	 */
	int deleteRoleMenusByIds(@Param(value = "decRoleIds") String decRoleIds);
}
